[XEN] Kexec: Disable crash keyhandler when no crash kernel is loaded.
authorIan Campbell <ian.campbell@xensource.com>
Wed, 13 Dec 2006 11:29:09 +0000 (11:29 +0000)
committerIan Campbell <ian.campbell@xensource.com>
Wed, 13 Dec 2006 11:29:09 +0000 (11:29 +0000)
Also make the crash dump key capital-C rather than lowercase to make it harder
to hit by mistake.

Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
xen/common/kexec.c

index 885afae80cc04c801ad07dea83b6880138a3e9d6..5906687a029ddfbe1f934ff261898da0c20c96dc 100644 (file)
@@ -140,13 +140,21 @@ void machine_crash_kexec(void)
 
 static void do_crashdump_trigger(unsigned char key)
 {
-       printk("triggering crashdump\n");
-       machine_crash_kexec();
+    int pos = (test_bit(KEXEC_FLAG_CRASH_POS, &kexec_flags) != 0);
+    if ( test_bit(KEXEC_IMAGE_CRASH_BASE + pos, &kexec_flags) )
+    {
+        printk("'%c' pressed -> triggering crashdump\n", key);
+        machine_crash_kexec();
+    }
+    else
+    {
+        printk("'%c' pressed -> no crash kernel loaded -- not triggering crashdump\n", key);
+    }
 }
 
 static __init int register_crashdump_trigger(void)
 {
-       register_keyhandler('c', do_crashdump_trigger, "trigger a crashdump");
+       register_keyhandler('C', do_crashdump_trigger, "trigger a crashdump");
        return 0;
 }
 __initcall(register_crashdump_trigger);